// dpTable
function bag(weight, value, target) {
    const len = weight.length;
    // 初始值
    // 如何迭代
    // 状态转移方程
    const dp = Array(target + 1).fill(0); // 初始化  dummy节点   
    dp[0] = 0;
    for (let i = weight[0]; i < target; i++) { // 背包放东西的可能性
        // 一件weight[0]
        dp[i] = value[0]; // 更大的值
    }
    // console.log(dp,'--------------');
    for (let i = 1; i <len; i++) {
        // 使用一维数组存续dp[j] 逆序遍历
        // 最优子结构
        for (let j = target; j >= weight[i]; j--) { // 物品的数量
            // j - 1
            dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i])
        }
    }
    return dp[target]
}

console.log(bag[2, 2, 6, 5, 4], [6, 3, 5, 4, 6], 10);